35. 搜索插入位置
题目
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例 1:
示例 2:
示例 3:
示例 4:
题解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| from typing import List
class Solution: def search(self, nums: List[int], target: int) -> int: left = 0 right = len(nums) - 1
while left <= right: middle = left + (right - left) // 2 if nums[middle] > target: right = middle - 1 elif nums[middle] < target: left = middle + 1 else: return middle
return left
if __name__ == '__main__': solution = Solution() print(solution.search(nums=[-1,0,3,5,9,12], target=99))
|
变体
总结
此题是二分法的相似提醒。和之前不同的是,如果找不到此处需要返回的是待插入的合适的位置。待插入的位置是 left。
参考